-module(mylists).
-export([sum/1, map/2, pythag/1, perms/1]).

sum([H|T]) ->  H +sum(T);
sum([]) -> 0.

map(_, []) -> [];
map(F, [H|T]) -> [F(H) | map(F, T)].

pythag(N) ->
	[{A, B, C} ||
		A <-lists:seq(1,N),
		B <-lists:seq(1,N),
		C <-lists:seq(1,N),
		A + B + C =<N,
		A*A + B*B =:= C*C
		].

perms([]) -> [[]];
perms(L) -> % H 是元素 T是列表 假设perms是写好的，再写主体部分
	[[H|T] || H <-L, T <- perms(L--[H])].

